#ifndef GB_IUSB_H
#define GB_IUSB_H

#include <glib-object.h>

// 定义IUSB类型
#define GB_TYPE_IUSB               gb_iusb_get_type()
// 向下转型方法
#define GB_IUSB(OBJ)               G_TYPE_CHECK_INSTANCE_CAST(OBJ, GB_TYPE_IUSB, GBIUsb)
// 检查对象类型是否为IUSB
#define GB_IS_IUSB(OBJ)            G_TYPE_CHECK_INSTANCE_TYPE(OBJ, GB_TYPE_IUSB)
// 从GBIUsb实例结构体获取类结构体指针
#define GB_IUSB_GET_INTERFACE(OBJ) G_TYPE_INSTANCE_GET_INTERFACE(OBJ, GB_TYPE_IUSB, GBIUsbInterface)

// 仅声明, 无需实现
typedef struct _GBIUsb GBIUsb;

typedef struct _GBIUsbInterface {
    GTypeInterface parent_interface;

    // 声明接口
    gchar *(*read)(GBIUsb *self);
    void (*write)(GBIUsb *self, const gchar *str);
} GBIUsbInterface;

GType gb_iusb_get_type(void);

// 定义接口
gchar *gb_iusb_read(GBIUsb *self);
void   gb_iusb_write(GBIUsb *self, const gchar *str);
#endif